home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / standards / CCITT / 1992 / X / x518_3.asc < prev    next >
Encoding:
Text File  |  1993-07-15  |  67.9 KB  |  1,563 lines

  1.          The drawings contained in this Recommendation have been done in AUTOCAD
  2.          18.6.5 Find naming context procedure
  3.          18.6.5.1 Introduction
  4.                Figure 8/X.518 shows this procedure in the form of a diagram.  Below  is  a
  5.          textual description. In this it is assumed that the current  value  of  Operation
  6.          Progress is always returned upon exit of the procedure.
  7.          18.6.5.2 Arguments
  8.                The procedure makes use of the following arguments:
  9.                -   the target object name (the purported name);
  10.                -   operation progress.
  11.          18.6.5.3 Results
  12.                There are two cases of successful outcome.
  13.                The first of these returns:
  14.                -   a reference;
  15.                -   operation progress (updated appropriately).
  16.                The second of these returns:
  17.                -   an indication that a suitable naming context was found locally;
  18.                -   operation progress (updated appropriately).
  19.          18.6.5.4 Errors
  20.                One of the following errors may be returned:
  21.                -   ServiceError (unableToProceed);
  22.                -   ServiceError (invalidReference).
  23.          18.6.5.5 Procedure
  24.                1)  If nameResolutionPhase is set to completed on entry, attempt to  match
  25.                   the purported name against the context prefixes of the superior  naming
  26.                   contexts of all the locally held naming contexts. If a match is  found,
  27.                   return all the appropriate locally held naming contexts. If no match is
  28.                   found, return an invalidReference ServiceError.
  29.                2)  If nameResolutionPhase is not  set  to  completed,  attempt  to  match
  30.                   context prefixes against a sequence of one or more RDNs in the  initial
  31.                   portion of the purported name. For a match to be found, all RDNs  in  a
  32.                   context prefix must be matched. The context prefixes used are those  of
  33.                   Naming Contexts for which this DSA  has  administrative  authority.  In
  34.                   case of multiple matches the one with the  maximum  number  of  matched
  35.                   RDNs is chosen.
  36.                   If a match is found, execute (3).
  37.                   If a match is not found, execute (5).
  38.                3)  If nameResolutionPhase is notStarted, execute (4). If  the  number  of
  39.                   RDNs in the initial portion of the purported name, matched as described
  40.                   in (2) above, is greater or equal to the nextRDNToBeResolved  component
  41.                   of OperationProgress, then execute (4), otherwise execute (9).
  42.                4)  The nextRDNToBeResolved is set to the number of matched RDNs plus 1 and 
  43.                   the nameResolutionPhase is set to Proceeding. The context  is  returned
  44.                   and this procedure terminated.
  45.                   As  a  performance  enhancement,  the  DSA  may  optionally  match  the
  46.                   purported name against the cross references held by the  DSA.  If  more
  47.                   RDNs are matched against a cross reference  than  against  the  locally
  48.                   held context prefixes, then execute step (7).
  49.                   Note - The Name Resolution procedure will in case of this outcome  call
  50.                   the Local Name Resolution.
  51.                5)  If no match was found, the value of the nameResolutionPhase is checked. 
  52.                   If the nameResolutionPhase is notStarted, execute (6).
  53.                   If  the  nameResolutionPhase   is   proceeding   or   completed,   then
  54.                   execute (9).
  55.                6)  Using Cross Reference context prefixes, attempt  to  match  against  a
  56.                   sequence of one or more RDNs in the initial portion  of  the  purported
  57.                   name. In case of multiple matches, the one with the maximum  number  of
  58.                   matched RDNs is chosen.
  59.                7)  If a match was found to a cross reference, set the nextRDNToBeResolved
  60.                   to the number  of  RDNs  in  the  chosen  cross  reference.  The  cross
  61.                   reference is returned and this procedure is terminated.
  62.                8)  If no match was found to a cross reference, determine if the DSA is  a
  63.                   first level DSA.  If not, it will have  a  superior  reference.  Return
  64.                   this and terminate the procedure.
  65.                   If the DSA is a first level DSA, set nextRDNToBeResolved  to  one,  and
  66.  
  67.  
  68.  
  69.  
  70.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  71.  
  72.                nameResolutionPhase to proceeding. Return the root naming  context  and
  73.                   terminate the procedure.
  74.                9)  Check the value of the referenceType component of the ChainingArgument. 
  75.                   If a non-specific subordinate reference was used, or the  request  came
  76.                   from  a  DUA,  execute  (10);  otherwise,  return   ServiceError   with
  77.                   invalidReference problem and terminate the procedure.
  78.                10) Compare the initial portion of  the  purported  name  to  the  context
  79.                   prefixes (minus their last RDN) of the locally  held  naming  contexts.
  80.                   This effectively is a comparison to some of the naming contexts of  the
  81.                   immediate superior to this DSA.
  82.                   f there is no match, return ServiceError with invalidReference  problem
  83.                   and terminate the procedure.
  84.                   f a match is found, and the number of RDNs  matched  is  less  than  in
  85.                   nextRDNToBeResolved -  1,  return  ServiceError  with  invalidReference
  86.                   problem;  otherwise,  return  ServiceError   unableToProceed   problem.
  87.                   Terminate the procedure.
  88.          18.6.6 Local Name Resolution
  89.          18.6.6.1 Introduction
  90.                The Local Name Resolution  matches  RDNs  in  the  purported  name  against
  91.          internal  knowledge  references.  It  returns  Found,  Remote  Reference,   Alias
  92.          Dereferenced, or Error indication.
  93.                Figure 9/X.518 shows this procedure in the form of a diagram.  Below  is  a
  94.          textual description.
  95.          18.6.6.2 Arguments
  96.                The procedure makes use of the following arguments:
  97.                -   internal reference to naming context (with pointer to the entry  whose
  98.                   name is the same as the context prefix);
  99.                -   the target object name (the purported name);
  100.                -   operation progress;
  101.                -   the value of the dontDereferenceAliases service control;
  102.                -   the value of the aliasedRDNs parameter;
  103.                -   the value of the aliasDereferenced parameter.
  104.          18.6.6.3 Results
  105.                There are three cases of successful outcome.
  106.                The first of these returns:
  107.                -   a reference;
  108.                -   operation progress (updated appropriately).
  109.                The second of these returns:
  110.                -   an indication that the entry was found locally;
  111.                -   operation progress (updated appropriately).
  112.                The third of these returns:
  113.                -   an indication that an alias was dereferenced;
  114.                -   operation progress (set back to "not started").
  115.          18.6.6.4 Errors
  116.                One of the following errors may be returned:
  117.                -   name error.
  118.          18.6.6.5 Procedure
  119.                The naming context returned by FindNaming Context will point to  the  entry
  120.          of the root of the subtree. In the case of the root context, the entry is only  a
  121.          null entry.
  122.                1)  f the internal reference is for an  alias  entry,  execute  step  (7),
  123.                   otherwise step (2).
  124.                2)  f all the RDNs in the purported name have been matched, then the target 
  125.                   entry has been found. Set nameResolutionPhase to completed. An internal
  126.                   pointer is returned and the procedure terminated.
  127.                   Otherwise step (3) should be executed.
  128.                   Note - The matching could be attained with the context  prefix  on  its
  129.                   own, or with the context  prefix  plus  successive  RDNs  contained  in
  130.                   internal references in the knowledge tree.
  131.                3)  If an internal reference entry is found  subordinate  to  the  current
  132.                   entry in the knowledge tree which matches the next RDN in the purported
  133.                   name, then increment the  nextRDNToBeResolved,  set  current  entry  to
  134.                   subordinate entry, and execute step (1) of this procedure again.
  135.                4)  If the current entry has a subordinate reference whose RDN matches the
  136.                   next one in the purported name, return it and terminate the procedure.
  137.  
  138.  
  139.  
  140.  
  141.          PAGE16  Fascicle VIII.8 - Rec. X.518
  142.  
  143.                5)  If there are any non-specific subordinate references,  subordinate  to
  144.                   the current entry in the knowledge tree, return them as references  and
  145.                   terminate the procedure.
  146.                6)  If an  internal  reference,  subordinate  reference,  or  non-specific
  147.                   subordinate reference is not found, then check the number  of  RDNs  in
  148.                   the purported name that have been matched.   If  more  RDNs  have  been
  149.                   matched than in the aliasedRDNs  component  of  ChainingArgument,  then
  150.                   return NameError with noSuchObject problem.  If  less  RDNs  have  been
  151.                   matched, then return NameError with aliasProblem.
  152.                7)  If the number of RDNs in the purported name that have been matched  is
  153.                   less than or equal to the aliasedRDNs component of ChainingArgument (if
  154.                   any), then the previous alias that was dereferenced (if any) points  to
  155.                   another alias. If so, return NameError with aliasDereferencingProblem.
  156.                8)  If the aliasedRDNs component is missing, or  if  the  number  of  RDNs
  157.                   matched is greater than aliasedRDNs component of ChainingArgument, then
  158.                   check the dontDereferenceAlias  service  control.  If  aliases  can  be
  159.                   dereferenced, then execute step (9), otherwise step (10).
  160.                9)  Dereference the alias. Set nameResolutionPhase of OperationProgress to
  161.                   notStarted. Set  aliasDereferenced  component  of  ChainingArgument  to
  162.                   TRUE, and aliasedRDNs to the number of RDNs  in  the  aliasedObjectName
  163.                   attribute of the  alias  entry.  Set  targetObject  to  the  new  name.
  164.                   Terminate the procedure.  (The  process  of  Name  Resolution  will  be
  165.                   restarted.)
  166.                10) If all the RDNs in the purported name have been matched, execute  step
  167.                   (2). Otherwise, return NameError with aliasDereferencingProblem.
  168.          18.7   Object evaluation procedures
  169.                The object evaluation  procedures  specified  comprise  two  categories  of
  170.          procedures:
  171.                a)  single-object evaluation procedure;
  172.                b)  multiple-object evaluation procedures.
  173.                Figure 10/X.518 shows the object evaluation procedure.
  174.                                         FIGURE 10/X.518 - T0704600-88
  175.  
  176.          18.7.1 Single-object evaluation procedures
  177.                Single-object evaluation procedures, which  are  common  to  the  class  of
  178.          operations concerned with accessing a single object  are  carried  out  directly,
  179.          with the result or error being returned to the invoker.
  180.                These   operations   comprise   Read,   Compare,   AddEntry,   RemoveEntry,
  181.          ModifyEntry and ModifyRDN, and their Chained counterparts.
  182.                The action required on  the  entry  is  as  described  in  the  appropriate
  183.          paragraph of Recommendation X.511.
  184.                AddEntry, RemoveEntry, and ModifyRDN operations affect  knowledge.  If  the
  185.          immediate superior of the entry is in a different DSA, correct external knowledge
  186.          references shall be maintained. How this is done is outside  the  scope  of  this
  187.          Recommendation.
  188.                How the DSA is chosen to contain the entry created by AddEntry  is  outside
  189.          the scope of this Recommendation.
  190.                If the immediate superior  of  an  entry  to  be  created  by  AddEntry  or
  191.          modified by ModifyRDN has non-specific subordinate references, procedures outside
  192.          the scope of this Recommendation shall be followed to ensure that no two  entries
  193.          have the same distinguished name.
  194.                Requests which cannot be satisfied under these conditions shall  fail  with
  195.          an UpdateError with problem affectsMultipleDSAs.
  196.          18.7.2 Multiple-object evaluation procedures
  197.                Multiple-object evaluation procedures, which are common  to  the  class  of
  198.          operations concerned with  accessing  multiple  objects,  are  specified  in  the
  199.          following subparagraphs.
  200.                These operations comprise List and Search, and their Chained counterparts.
  201.          18.7.2.1 List
  202.                This paragraph specifies the evaluation  procedure  specific  to  List  and
  203.          ChainedList. (In what follows the term "List" applies to both.)
  204.          18.7.2.1.1  List procedure (I)
  205.                This procedure applies  where  the  List  request  has  nameResolutionPhase
  206.          component of OperationProgress set to notStarted or proceeding and where the DSA,
  207.          after performing Name Resolution The base object will be denoted by "e".
  208.  
  209.  
  210.  
  211.  
  212.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  213.  
  214.                1)  Get each locally held immediate subordinate of e to form a local set of 
  215.                   results.  Set aliasEntry and fromEntry in ListResult as appropriate.
  216.                2)  Get the set of non-specific  subordinate  references  and  subordinate
  217.                   references to DSAs which hold immediate subordinates of "e".
  218.                3)  Pass the subrequest with base object = e, and OperationProgress set to
  219.                   completed to the Operation Dispatcher which subsequently forwards it to
  220.                   each DSA which holds immediate subordinates of e.
  221.                Note - If the DSA  holds  subordinate  references  with  an  indication  of
  222.          whether or not the subordinate entry are aliases, and the dontUseCopy  is  FALSE,
  223.          then this step can be omitted  for  those  entries.  The  information  about  the
  224.          subordinates is available directly.
  225.          18.7.2.1.2  List Procedure (II)
  226.                This procedure applies to  a  List  request  with  the  nameResolutionPhase
  227.          component of OperationProgress set to completed.
  228.                The base object will be denoted by "e".
  229.                1)  Get each locally held immediate subordinate of e to form a local set of 
  230.                   results. Set aliasEntry and fromEntry in ListResult as appropriate.  
  231.                2)  Pass the results to the Operation Dispatcher which forwards them to the 
  232.                   requesting DUA or DSA.
  233.          18.7.2.2 Search
  234.                This paragraph specifies the evaluation procedure specific  to  Search  and
  235.          ChainedSearch. (In what follows the term "Search" applies to both.)
  236.                Note that two circumstances exist, requiring two separate  procedures.  The
  237.          first procedure ( 18.7.2.2.1) applies when the DSA executing the Search  contains
  238.          the targetObject as a local entry. The second  procedure  (  18.7.2.2.2)  applies
  239.          when the DSA executing the Search  does  not  hold  the  targetObject,  but  only
  240.          subordinates of the targetObject.
  241.          18.7.2.2.1  Search procedure (I)
  242.                This procedure applies to a Search  request  with  the  nameResolutionPhase
  243.          component of OperationProgress set to notStarted or proceeding and where the DSA,
  244.          after performing Name Resolution, determines that it holds the target object.
  245.                The base object will be denoted by "e".
  246.                1)  If the subset argument is baseObject or wholeSubtree, then  apply  the
  247.                   filter argument specified in the Search to the entry e, to form  a  set
  248.                   of local results. Return the results for Results Merging. If the subset
  249.                   argument is baseObject, terminate the procedure, otherwise continue  at
  250.                   (2).
  251.                2)  If the subset argument is oneLevel or wholeSubtree form a set  E  from
  252.                   the locally-held immediate subordinates of e, except that:
  253.                   If aliases are to be dereferenced, i.e. the searchAliases parameter  is
  254.                   TRUE, then any alias entries that are found are handled in paragraph 5)
  255.                   below and do not contribute to these results.
  256.                   Apply the filter arguments to E to give a filtered subset Ew'gE; return
  257.                   this set Ew' of local results for Results Merging.
  258.                3)  Other subordinates of e may reside in other DSAs, and if  so  will  be
  259.                   referenced as subordinate or non-specific subordinate  references.  For
  260.                   each DSA which is so referenced, prepare a new Search with targetObject
  261.                   =  e,  and  with  nameResolutionPhase  of  OperationProgress   set   to
  262.                   completed. Return each Search subrequest to  the  Operation  Dispatcher
  263.                   for forwarding. If any error result is returned from a  subrequest,  it
  264.                   is ignored, as if no subrequest had been sent.
  265.                4)  If the subset argument is oneLevel, the  Search  is  now  complete  so
  266.                   terminate the procedure.
  267.                   If the subset argument is wholeSubtree, then:
  268.                   if the set E from paragraph (2) is empty, then the whole  subtree  held
  269.                   in this DSA has been searched, so terminate the procedure;
  270.                   otherwise continue processing as follows:
  271.                   let each entry that was in set E be denoted by  e.  Repeat  the  Search
  272.                   procedure from paragraph (2), for each entry e.
  273.                5)  If aliases are to be dereferenced, any alias entries found in step (2)
  274.                   are placed in set D. For each entry d in D, dereference the alias,  and
  275.                   formulate a new Search with nameResolutionPhase set to notStarted,  and
  276.                   targetObject created from the aliasedObjectName attribute and  the  old
  277.                   targetObject name.
  278.                   If the subset argument was oneLevel, set it to baseObject  in  the  new
  279.  
  280.  
  281.  
  282.  
  283.          PAGE16  Fascicle VIII.8 - Rec. X.518
  284.  
  285.                subrequest, otherwise set it to wholeSubtree.
  286.                   If any error result is returned from the subrequest, it is ignored,  as
  287.                   if no subrequest had been made.
  288.          18.7.2.2.2  Search Procedure (II)
  289.                This procedure applies to a Search  request  with  the  nameResolutionPhase
  290.          component of OperationProgress set to completed.
  291.                The target object will be denoted by "e".
  292.                For each locally held immediate subordinate  ew'  of  e,  formulate  a  new
  293.          request with targetObject = ew'.
  294.                If the subset argument was oneLevel, set it to baseObject, otherwise  leave
  295.          it as wholeSubtree. Now carry out the procedure defined in steps (1)  to  (5)  in
  296.           18.7.2.2.1.  If  there  are  no  such   subordinates,   return   unableToProceed
  297.          ServiceError.
  298.          18.8   Result merging procedure
  299.                This procedure is called when external results and/or errors  are  present.
  300.          There might also be one internal result. All results and errors are assumed to be
  301.          held within the DSA until the procedure completes.
  302.                The external information could be due to chaining, multicasting or  request
  303.          decomposition.
  304.                In the case of chaining there will be a single  result  or  error.  In  the
  305.          case of multicasting there might be either  no  result,  one  result  or  several
  306.          identical results. In addition, there may be some errors. If there is  more  than
  307.          one result, all but one of them are arbitrarily discarded.  A  result  is  always
  308.          returned in preference to an  error.  If  there  are  no  results,  an  error  is
  309.          returned, with the following exceptions:
  310.                i)  If invalidReference was returned, the reference is marked as such, and
  311.                   the DSA may either use an appropriate alternate external  reference  to
  312.                   continue the  request,  or  return  ditError  to  the  requestor.  (The
  313.                   handling of invalid external references is beyond  the  scope  of  this
  314.                   Recommendation.)
  315.                ii) In the case of multicasting, unableToProceed errors should be ignored,
  316.                   unless  all  responses  are  of  this  type  in  which  case  NameError
  317.                   noSuchObject should be returned to  the  responder.  If  at  least  one
  318.                   result is returned, then all errors can be ignored.
  319.                iii)   In the case of referrals, these need not be treated as errors,  and
  320.                   may be acted upon.
  321.                If the merging is required due to  a  request  decomposition,  the  merging
  322.          amounts to forming the union of the results.
  323.                In the case of decomposition, when there are both results and errors to  be
  324.          merged, an incomplete result is returned to the requestor.
  325.                A DSA might at this stage choose to extract  referrals  from  the  incoming
  326.          results and errors that should be merged. It might then decide to explore all  or
  327.          some of these further, in which case operations are chained. The old result  will
  328.          have to be saved and later merged with the results  or  errors  produced  by  the
  329.          chaining.
  330.                The handling of signatures which may be  present  with  the  results  being
  331.          returned is specified in  18.9.2 below.
  332.          18.9   Procedures for distributed authentication
  333.                This paragraph specifies the procedures necessary to support the  directory
  334.          distributed authentication services. These services, and  hence  the  procedures,
  335.          are categorized as:
  336.                -   originator authentication, which is supported in either an unprotected
  337.                   (simple identity based) or secure (based upon digital signatures) form;
  338.                   and
  339.                -   results authentication which is similarly protected (again based  upon
  340.                   digital signatures).
  341.          18.9.1 Originator authentication
  342.          18.9.1.1 Identity based authentication
  343.                The identity based authentication service enables DSAs to authenticate  the
  344.          original requestor of information for  the  purpose  of  effecting  local  access
  345.          controls.  DSAs  wishing  to  exploit  this  service  must  adopt  the  following
  346.          procedure:
  347.                -   for a DSA requiring to authenticate a DAP request, the   DSA  acquires
  348.                   the distinguished name of the requestor through the Bind procedures  at
  349.                   the time a DUA association (DUA  or  DSA)  is  established.  Successful
  350.  
  351.  
  352.  
  353.  
  354.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  355.  
  356.                conclusion of these procedures does not in any way prejudice the  level
  357.                   of authentication that may  subsequently  be  required  for  processing
  358.                   operations using that association;
  359.                -   the DSA  with  which  the  DUA  association  exists  must  insert  the
  360.                   requestor's  distinguished  name  in  the  initiator   field   of   the
  361.                   ChainingArgument for all subsequent chained operations to other DSAs;
  362.                -   a DSA, on receiving a chained-operation, may satisfy that operation, or 
  363.                   not, depending upon the  determination  of  access  rights  (a  locally
  364.                   defined mechanism). If the outcome is not satisfactory a  SecurityError
  365.                   may be returned with SecurityProblem set to insufficientAccessRights.
  366.          18.9.1.2 Signature-based originator authentication
  367.                This signature-based originator authentication service  enables  a  DSA  to
  368.          authenticate (in a secure manner) the originator of a particular service request.
  369.          The procedures to be effected by a DSA in realizing this service are described in
  370.          this paragraph.
  371.                The signature-based authentication service is invoked by a  DUA  using  the
  372.          SIGNED variant of an optionally-signed service request.
  373.                A DSA, on receiving a signed request from another DSA,  shall  remove  that
  374.          DSA's signature prior to processing the operation. Assuming  the  result  of  any
  375.          signature verification proves to  be  satisfactory,  the  DSA  will  continue  to
  376.          progress the operation. If,  during  processing,  the  DSA  requires  to  perform
  377.          chaining, multicasting or  request  decomposition,  the  argument  set  for  each
  378.          associated chained operation shall be constructed as follows:
  379.                -   the DSA forms an argument set which  may  be  optionally  signed;  the
  380.                   argument set comprises the incoming signed argument set together with a
  381.                   modified ChainingArgument.
  382.                In the event that  the  DSA  is  able  to  contribute  information  to  the
  383.          response, originator authentication, based upon the signed service  request,  may
  384.          be used for the determination of access rights to that information.
  385.                If a DSA receives an unsigned service request for  information  which  will
  386.          only be released subject to originator authentication, a  SecurityError  will  be
  387.          returned with SecurityProblem set to protectionRequired.
  388.          18.9.2 Results authentication
  389.                This service is provided  to  enable  requestors  of  directory  operations
  390.          (either DUA or DSAs) to verify  (in  a  secure  manner  using  digital  signature
  391.          techniques) the source of results.  The results  authentication  service  may  be
  392.          requested irrespective of whether originator authentication is to be used.
  393.                The results authentication service is initiated using the signed  value  of
  394.          the protectionRequest component as contained within the argument set of directory
  395.          operations; a DSA receiving an operation  with  this  option  selected  may  then
  396.          optionally  sign   any   subsequent   results.   The   signed   option   in   the
  397.          protectionRequest serves as  an  indication,  to  the  DSA,  of  the  requestor's
  398.          preference; the DSA may, or may not, actually sign any subsequent results.
  399.                In the  case  where  a  DSA  performs  chaining,  multicasting  or  request
  400.          decomposition of such a request, the DSA has a number of options in terms of  the
  401.          form of results sent back to the requestor, namely:
  402.                a)  return a composite response (signed or unsigned) to the requestor;
  403.                b)  return a set of two or more uncollated partial  responses  (signed  or
  404.                   unsigned) to the requestor; within this set zero or more members may be
  405.                   signed and zero or one unsigned.  In the event that an unsigned partial
  406.                   result is present, this member may in fact be a  collation  of  one  or
  407.                   more unsigned partial responses which have  been  received  from  other
  408.                   DSAs, contributed by this DSA, or both.
  409.                                                    ANNEX A
  410.                                      (to Recommendation X.518)
  411.                                   ASN.1 for distributed operations
  412.                This Annex is part of the Recommendation.
  413.                This Annex includes all of the ASN.1  type,  value  and  macro  definitions
  414.          contained in this Recommendation in the form  of  the  ASN.1  module  Distributed
  415.          Operations.
  416.                DistributedOperations      {joint-iso-ccitt        ds(5)        modules(1)
  417.                   distributedOperations(3)}
  418.                DEFINITIONS  ::=
  419.                BEGIN
  420.                EXPORTS
  421.  
  422.  
  423.  
  424.  
  425.          PAGE16  Fascicle VIII.8 - Rec. X.518
  426.  
  427.                      DirectoryRefinement,       chainedReadPort,       chainedSearchPort,
  428.                       chainedModifyPort,
  429.                      DSABind, DSABindArgument,
  430.                      DSAUnbind,
  431.                      ChainedRead, ChainedCompare, ChainedAbandon,
  432.                      ChainedList, ChainedSearch,
  433.                      ChainedAddEntry, ChainedRemoveEntry,
  434.                      ChainedModifyEntry, ChainedModifyRDN,
  435.                      DsaReferral, ContinuationReference;
  436.                IMPORTS
  437.                      InformationFramework, abstractService, distributedOperations,
  438.                      directoryObjectIdentifiers, selectedAttributeTypes
  439.                          FROM     UsefulDefinitions  {joint-iso-ccitt  ds(5)   modules(1)
  440.                          usefulDefinitions(0)}
  441.                      DistinguishedName, Name, RelativeDistinguishedName
  442.                            FROM  InformationFramework informationFramework
  443.                      id-ot-dsa, id-pt-chained-read, id-pt-chained-searc ,  id-pt-chained-
  444.                       modify
  445.                          FROM                      DistributedDirectoryObjectIdentifiers,
  446.                          distributedDirectoryObjectIdentifiers
  447.                PresentationAddress
  448.                          FROM    SelectedAttributeTypes selectedAttributeTypes
  449.                      directory, readPort, searchPort, modifyPort
  450.                      DirectoryBind,
  451.                      ReadArgument, ReadResult,
  452.                      CompareArgument, CompareResult,
  453.                      Abandon
  454.                      ListArgument, ListResult,
  455.                      SearchArgument, SearchResult,
  456.                      AddEntryArgument, AddEntryResult,
  457.                      RemoveEntryArgument, RemoveEntryResult,
  458.                      ModifyEntryArgument, ModifyEntryResult,
  459.                      ModifyRDNArgument, ModifyRDNResult,
  460.                      Abandoned, AttributeError, NameError,  ServiceError,  SecurityError,
  461.                       UpdateError
  462.                      OPTIONALLY-SIGNED, SecurityParameters
  463.                          FROM    DirectoryAbstractService directoryAbstractService
  464.                -- objects and ports --
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  497.  
  498.                DirectoryRefinement     ::=  REFINE  directory AS
  499.                      dsa   RECURRING
  500.                          readPort            [S]   VISIBLE
  501.                          searchPort    [S]   VISIBLE
  502.                          modifyPort    [S]   VISIBLE
  503.                          chainedReadPort           PAIRED  WITH  dsa
  504.                          chainedSearchPort   PAIRED  WITH  dsa
  505.                          chainedModifyPort   PAIRED  WITH  dsa
  506.                dsa  OBJECT
  507.                      PORTS  {   readPort    [S],
  508.                                  searchPort  [S],
  509.                                  modifyPort  [S],
  510.                                  chainedReadPort,
  511.                                  chainedSearchPort
  512.                                  chainedModifyPort}
  513.                      ::= id-ot-dsa
  514.                chainedReadPort PORT
  515.                      ABSTRACT OPERATIONS {
  516.                          ChainedRead, ChainedCompare,
  517.                          ChainedAbandon}
  518.                      ::= id-pt-chained-read
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.          PAGE16  Fascicle VIII.8 - Rec. X.518
  568.  
  569.                   chainedSearchPort PORT
  570.                      ABSTRACT OPERATIONS {
  571.                            ChainedList, ChainedSearch}
  572.                      ::=   id-pt-chained-search
  573.                chainedModifyPort PORT
  574.                      ABSTRACT-OPERATIONS {
  575.                            ChainedAddEntry, ChainedRemoveEntry,
  576.                            ChainedModifyEntry, ChainedModifyRDN}
  577.                      ::= id-pt-chained-modify
  578.                DSABind   ::=     ABSTRACT-BIND
  579.                      TO  {chainedRead,
  580.                            chainedSearch,
  581.                            chainedModify}
  582.                      DirectoryBind
  583.                DSAUnbind ::=     UNBIND
  584.                      FROM       {chainedRead,
  585.                                        chainedSearch,
  586.                                        chainedModify}
  587.                -- operations, arguments and results --
  588.                ChainedRead ::=
  589.                      ABSTRACT-OPERATION
  590.                            ARGUMENT    OPTIONALLY-SIGNED SET{
  591.                                                                ChainingArgument,
  592.                                                                [0]  ReadArgument}
  593.                            RESULT      OPTIONALLY-SIGNED SET{
  594.                                                                ChainingResult,
  595.                                                                [0]  ReadResult}
  596.                            ERRORS {
  597.                                  DsaReferral, Abandoned, AttributeError, NameError, 
  598.                                  ServiceError, SecurityError}
  599.                ChainedCompare          ::=
  600.                      ABSTRACT-OPERATION
  601.                            ARGUMENT    OPTIONALLY-SIGNED SET{
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  639.  
  640.                                                                ChainingArgument,
  641.                                                                [0]  CompareArgument}
  642.                            RESULT      OPTIONALLY-SIGNED SET{
  643.                                                                ChainingResult,
  644.                                                                [0]  CompareResult}
  645.                            ERRORS {
  646.                                  DsaReferral, Abandoned, AttributeError, NameError,
  647.                                  ServiceError, SecurityError}
  648.                ChainedAbandon          ::=   Abandon
  649.                ChainedList ::=
  650.                      ABSTRACT-OPERATION
  651.                            ARGUMENT    OPTIONALLY-SIGNED SET{
  652.                                                                ChainingArgument,
  653.                                                                [0]  ListArgument}
  654.                            RESULT      OPTIONALLY-SIGNED SET{
  655.                                                                ChainingResult,
  656.                                                                [0]  ListResult}
  657.                            ERRORS {
  658.                                  DsaReferral, Abandoned, AttributeError, NameError,
  659.                                  ServiceError, SecurityError }
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.          PAGE16  Fascicle VIII.8 - Rec. X.518
  710.  
  711.                   ChainedSearch     ::=
  712.                      ABSTRACT-OPERATION
  713.                            ARGUMENT    OPTIONALLY-SIGNED SET{
  714.                                                                ChainingArgument,
  715.                                                                [0]  SearchArgument}
  716.                            RESULT      OPTIONALLY-SIGNED SET{
  717.                                                                ChainingResult,
  718.                                                                [0]  SearchResult}
  719.                            ERRORS {
  720.                                  DsaReferral, Abandoned, AttributeError, NameError,
  721.                                  ServiceError, SecurityError}
  722.                ChainedAddEntry     ::=
  723.                      ABSTRACT-OPERATION
  724.                            ARGUMENT    OPTIONALLY-SIGNED SET{
  725.                                                                ChainingArgument,
  726.                                                                [0]  AddEntryArgument}
  727.                            RESULT      OPTIONALLY-SIGNED SET{
  728.                                                                ChainingResult,
  729.                                                                [0]  AddEntryResult}
  730.                            ERRORS {
  731.                                  DsaReferral, Abandoned, AttributeError, NameError,
  732.                                  ServiceError, SecurityError, UpdateError}
  733.                ChainedRemoveEntry      ::=
  734.                      ABSTRACT-OPERATION
  735.                            ARGUMENT    OPTIONALLY-SIGNED SET{
  736.                                                                ChainingArgument,
  737.                                                                [0]  RemoveEntryArgument}
  738.                            RESULT      OPTIONALLY-SIGNED SET{
  739.                                                                ChainingResult,
  740.                                                                [0]  RemoveEntryResult}
  741.                            ERRORS {
  742.                                  DsaReferral, Abandoned, NameError,
  743.                                  ServiceError, SecurityError, UpdateError}
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  781.  
  782.                ChainedModifyEntry      ::=
  783.                      ABSTRACT-OPERATION
  784.                            ARGUMENT    OPTIONALLY-SIGNED SET{
  785.                                                                ChainingArgument,
  786.                                                                [0]  ModifyEntryArgument}
  787.                            RESULT      OPTIONALLY-SIGNED SET{
  788.                                                                ChainingResult,
  789.                                                                [0]  ModifyEntryResult}
  790.                            ERRORS {
  791.                                  DsaReferral, Abandoned, AttributeError, NameError,
  792.                                  ServiceError, SecurityError, UpdateError}
  793.                ChainedModifyRDN  ::=
  794.                      ABSTRACT-OPERATION
  795.                            ARGUMENT    OPTIONALLY-SIGNED SET{
  796.                                                                ChainingArgument,
  797.                                                                [0]  ModifyRDNArgument}
  798.                            RESULT      OPTIONALLY-SIGNED SET{
  799.                                                                ChainingResult,
  800.                                                                [0]  ModifyRDNResult}
  801.                            ERRORS {
  802.                                  DsaReferral, Abandoned, NameError,
  803.                                  ServiceError, SecurityError, UpdateError}
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.          PAGE16  Fascicle VIII.8 - Rec. X.518
  852.  
  853.                   -- errors and parameters --
  854.                DSAReferral ::=
  855.                      ABSTRACT-ERROR
  856.                            PARAMETER SET {
  857.                                  [0]   ContinuationReference,
  858.                                  contextPrefix     [1]   DistinguishedName OPTIONAL}
  859.                -- common arguments/results --
  860.                ChainingArguments ::=         SET {
  861.                      originator             [0]   DistinguishedName OPTIONAL,
  862.                      targetObject                 [1]   DistinguishedName OPTIONAL,
  863.                      operationProgress              [2]      OperationProgress    DEFAULT
  864.                       {notStarted}
  865.                      traceInformation       [3]   TraceInformation,
  866.                      aliasDereferenced            [4]   BOOLEAN DEFAULT FALSE,
  867.                      aliasedRDNs                  [5]   INTEGER OPTIONAL,
  868.                            -- absent unless aliasDereferenced is TRUE
  869.                      returnCrossRefs        [6]   BOOLEAN DEFAULT FALSE,
  870.                      referenceType                [7]   ReferenceType DEFAULT superior,
  871.                      info                         [8]   Domaininfo OPTIONAL,
  872.                      timeLimit              [9]   UTCTime OPTIONAL,
  873.                                              [10]  SecurityParameters DEFAULT { }}   
  874.                ChainingResults   ::=         SET {
  875.                      info                         [0]   Domaininfo OPTIONAL,
  876.                      crossReferences        [1]   SEQUENCE OF CrossReference OPTIONAL,
  877.                                              [2]   SecurityParameters DEFAULT { }}
  878.                CrossReference           ::=        SET {
  879.                      contextPrefix    [0]         DistinguishedName,
  880.                      accessPoint                  [1]   AccessPoint}
  881.                ReferenceType           ::=         ENUMERATED {
  882.                          superior                                    (1),
  883.                          subordinate                           (2),
  884.                          cross                                 (3),
  885.                          nonSpecificSubordinate                      (4)}
  886.                TraceInformation  ::=         SEQUENCE OF
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  923.  
  924.                      SEQUENCE {
  925.                            targetObject            Name,
  926.                            dsa Name,
  927.                            OperationProgress}
  928.                OperationProgress ::=         SET   {
  929.                      nameResolutionPhase                [0]  ENUMERATED {
  930.                                                                      notStarted  (1),
  931.                                                                      proceeding  (2),
  932.                                                                      completed   (3)},
  933.                      nextRDNToBeResolved          [1]  INTEGER OPTIONAL}
  934.                DomainInfo              ::=   ANY
  935.                ContinuationReference         ::=   SET {
  936.                      targetObject           [0]   Name,
  937.                      aliasedRDNs            [1]   INTEGER OPTIONAL,
  938.                      operationProgress      [2]   OperationProgress
  939.                      rdnsResolved           [3]   INTEGER OPTIONAL,
  940.                      referenceType          [4]   ReferenceType OPTIONAL,
  941.                                        -- only present in the DSP --
  942.                      accessPoints           [5]   SET OF AccessPoint }
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.          PAGE16  Fascicle VIII.8 - Rec. X.518
  994.  
  995.                   AccessPoint ::=   SET {
  996.                      ae-title   [0]   Name,
  997.                      address    [1]   PresentationAddress }
  998.                                                    ANNEX B
  999.                                      (to Recommendation X.518)
  1000.                                        Modelling of knowledge
  1001.                This Annex is not part of the Recommendation.
  1002.          B.1    Example of knowledge modelling
  1003.                The following example illustrates  the  knowledge  information  that  would
  1004.          have to be maintained by the DSAs shown in Figure 5/X.518 (  9).  Figure  5/X.518
  1005.          depicts a hypothetical DIT logically partitioned into five Naming Contexts (A, B,
  1006.          C, D and E) and physically distributed over three DSAs (DSA1, DSA2, DSA3). In the
  1007.          example, DSA1 holds context C, DSA2 holds contexts A, B, and E,  and  DSA3  holds
  1008.          context D.
  1009.                The following abbreviations have be n  used  in  Figures  B-1/X.518  to  B-
  1010.          3/X.518.
  1011.                SUPR:      superior reference
  1012.                SUBR:      subordinate reference
  1013.                INTR:      internal reference
  1014.                NSSR:      non-specific subordinate reference
  1015.                CROSSR:   cross reference
  1016.                DSAn:      Distinguished Name of DSAn
  1017.                PS:         Presentation Address
  1018.                CP:         context prefix
  1019.                RDN:       Relative Distinguished name
  1020.                DSA:       Distinguished name of a DSA
  1021.                PTR:       Pointer
  1022.                AON:       Aliased Object Name.
  1023.                Note - The following figures are  intended  only  to  provide  a  pictorial
  1024.          example of the concepts defined in this paragraph. How knowledge  information  is
  1025.          actually stored and managed in a particular DSA implementation is a local  matter
  1026.          and is outside the scope of this Recommendation.
  1027.                                        FIGURE B-1/X.518 - T0704610-88
  1028.  
  1029.                Figure B-1/X.518 illustrates the knowledge information that  must  be  held
  1030.          by DSA1.  This must include the following context prefixes and set of references:
  1031.                Context Prefixes: {C=WW, O=ABC}, context C.
  1032.                Cross References: { }
  1033.                Superior References:    {DSA2, presentation address of DSA2}
  1034.                Internal References
  1035.                for Context C:                {C=WW, O=ABC},
  1036.                                  {OU=G}, {OU=H}
  1037.                                  {OU=G, CN=1},
  1038.                                  {OU=G, CN=m},
  1039.                                  {OU=G, CN=n}.
  1040.                Subordinate References:       { }
  1041.                Non-specific subordinate
  1042.                References:                   {DSA2, presentation address of DSA2}.
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  1065.  
  1066.                                        FIGURE B-2/X.518 - T0704620-88
  1067.  
  1068.                Figure B-2/X.518 illustrates the knowledge information that  must  be  held
  1069.          by DSA2.  This must include the following context prefixes and set of references:
  1070.                Context Prefixes: {C=WW}, context A
  1071.                                  {C=VV}, context B
  1072.                                  {C=WW}, O=ABC, OU=I}, context E.
  1073.                Cross References: { }
  1074.                Superior References:    { }
  1075.                Internal References
  1076.                for Context A:                {C=WW}
  1077.                Internal References
  1078.                for Context B:                {C=VV}
  1079.                Internal References
  1080.                for Context E:                {C=WW, O=ABC, OU=I},
  1081.                                  {CN=o},
  1082.                                  {CN=p},
  1083.                                  {CN=q}.
  1084.                Subordinate References
  1085.                for Context A:                {C=WW, O=ABC}
  1086.                Subordinate References
  1087.                for Context B:                {C=VV, O=DEF}
  1088.                Non-specific subordinate
  1089.                References:             { }
  1090.                                        FIGURE B-3/X.518 - T0704630-88
  1091.  
  1092.                Figure B-3/X.518 illustrates the knowledge information that  must  be  held
  1093.          by DSA3. This must include the following context prefixes and set of references:
  1094.                Context Prefixes: {C=VV, O=DEF}, context D
  1095.                Cross References: {{C=WW, O=ABC, OU=H}, DSA1, presentation address of DSA1} 
  1096.                   (not shown                       in the figure above)
  1097.                Superior References:    {DSA2, presentation address of DSA2}
  1098.                Internal References
  1099.                for Context D:                {DSA1, presentation address of DSA1}
  1100.                                  {C=VV, O=DEF},
  1101.                                  {OU=J},
  1102.                                  {OU=K} alias for {C=WW, O=ABC, OU=I, CN=o}
  1103.                                  (alias information is not part of the knowledge)
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.          PAGE16  Fascicle VIII.8 - Rec. X.518
  1136.  
  1137.                  Subordinate References: { }
  1138.                  Non-specific subordinate
  1139.                  References:             { }
  1140.           B.2    Example of distributed name resolution
  1141.                 The following is an example of how Distributed Name Resolution is  used  to
  1142.           process different directory requests. The example is based  on  the  hypothetical
  1143.           DIT shown in Figure 5/X.518 ( 9) and the corresponding DSA configuration(s) shown
  1144.           in Figures B-1/X.518 to B-3/X.518 (Annex B).
  1145.                 Assuming a chaining mode of propagating, the following  requests  addressed
  1146.           to DSA1 would be processed as follows:
  1147.                  1)   A request with distinguished name {C=WW, O=ABC, OU=G, CN=1}
  1148.                      -   Will match context prefix {C=WW, O=ABC} of context C for which DSA1
  1149.                         has administrative authority. Therefore, name resolution will begin
  1150.                         in DSA1 with         context  C.
  1151.                      -   Name resolution will proceed downwards in  context  C  successfully
  1152.                         matching each remaining RDN, until CN=1 is located.
  1153.                  2)  A request with distinguished name {C=WW, O=JPR}
  1154.                      -   Will not match any context prefix held by DSA1, therefore DSA1 will
  1155.                         use its superior reference to forward the request to  its  superior
  1156.                         DSA, DSA2.
  1157.                      -   In DSA2, the request will match  context  prefix  {C=WW}  and  name
  1158.                         resolution will begin in DSA2 with context A.
  1159.                      -   Name resolution will not find a subordinate of C=WW  to  match  RDN
  1160.                         O=JPR, therefore the  request  will  fail  and  the  name  will  be
  1161.                         determined to have been invalid  (i.e.   reference  a  non-existent
  1162.                         object).
  1163.                  3)  A request with distinguished name {C=VV, O=DEF, OU=K}
  1164.                      -   DSA1 will therefore forward the request to its superior DSA, DSA2.
  1165.                      -   The request will match context prefix {C=VV} of context B  held  by
  1166.                         DSA2.  Therefore, name resolution will begin in DSA2  with  context
  1167.                         B.
  1168.                      -   As name  resolution  attempts  to  match  O=DEF,  it  will  find  a
  1169.                         subordinate reference indicating that {C=VV, O=DEF} is the start of
  1170.                         a new context held in DSA3.
  1171.                      -   Name resolution will continue in DSA3 until {C=VV, O=DEF, CN=K}  is
  1172.                         located.
  1173.                      -   Assuming that aliases are to be dereferenced, a new  name  will  be
  1174.                         constructed using the aliased name contained in  the  entry  {C=VV,
  1175.                         O=DEF, CN=K}.  The resulting new name will be: {C=WW, O=ABC,  OU=I,
  1176.                         CN=o}.
  1177.                      -   DSA3 will resume processing of  the  request  using  the  new  name
  1178.                         obtained by dereferencing.
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200.  
  1201.  
  1202.  
  1203.  
  1204.  
  1205.  
  1206.                                                        Fascicle VIII.8 - Rec. X.518   PAGE1
  1207.  
  1208.                                                    ANNEX C
  1209.                                      (to Recommendation X.518)
  1210.                                  Distributed use of authentication
  1211.                This Annex is not part of the Recommendation.
  1212.          C.1    Summary
  1213.                The  security  model  is  defined  in   10  of  Recommendation  X.501.  The
  1214.          following is a summary of the main points of the model.
  1215.                a)  Simple Authentication of the operation initiator is not  supported  in
  1216.                   the DSP.
  1217.                b)  Strong Authentication, by the signing of the request and of the result, 
  1218.                   is supported in the DSP.
  1219.                c)  Encryption of the request, or of the result, is not supported  in  the
  1220.                   DSP.
  1221.                d)  Authentication of errors, including referrals, is not supported in the
  1222.                   DSP.
  1223.                This  Annex  describes  how  b)  above  is  realized  in  the   distributed
  1224.          Directory. It makes use of terminology and  notation  defined  in  Recommendation
  1225.          X.509.
  1226.          C.2    Simple authentication
  1227.                The DUA will be authenticated as part of the Bind  Operation  of  the  DAP.
  1228.          Thereafter, only the name of the DUA will be carried in the DSP, in the initiator
  1229.          field of the Chaining Argument.
  1230.          C.3    Distributed authentication model
  1231.                                        FIGURE C-1/X.518 - T0704640-88
  1232.  
  1233.                Figure  C-1/X.518  illustrates  the  model  to  be  used  to  specify   the
  1234.          distributed authentication procedures.  The  model  identifies  the  sequence  of
  1235.          information flows for the general  case  of  a  list  or  search  operation.  The
  1236.          operation is considered as originating from DUA "a" citing a target object  which
  1237.          resides in DSA "c"; in performing the operation, DSAs "b", "c", "d" and  "e"  are
  1238.          to be involved.
  1239.                DUA "a" initially contacts any DSA  (DSA  "b")  which  does  not  hold  the
  1240.          target object, but which is able to navigate, via chaining, to the DSA (DSA  "c")
  1241.          holding the target object. If all the DSAs were operating in referral mode,  then
  1242.          the model would be significantly simplified,  and  each  DUA/DSA  exchange  would
  1243.          equate, in authentication terms, to the interaction between DUA "a" and DSA "b".
  1244.          C.4    DUA to DSA
  1245.                Originator authentication is realized as a consequence of exchange (1).  In
  1246.          Figure C-1/X.518 the authentication procedure is as follows:
  1247.                Let
  1248.                OA = the Operation Argument i.e. Search, Read, Compare  etc.  Argument  as
  1249.                   defined in Part 3.
  1250.                and
  1251.                a(OA) = the Operation Argument signed by DUA "a".
  1252.                Authentication will be determined by verification of the signature.
  1253.          C.5    Transference from the DAP to the DSP
  1254.                This procedure is effected by DSA "b" in Figure  C-1/X.518  and  represents
  1255.          the transference of the signed identity of the initiator from the DAP to the DSP.
  1256.                DSA "b" formulates the appropriate Chaining Argument as described in   12.3
  1257.          of this Recommendation and combines it with the Operation Argument from  the  DAP
  1258.          thus forming a Chained Operation, i.e. Chained Read, Search,  List  etc.  of  the
  1259.          DSP. The Chained Operation so formed will be signed prior to passing it to  other
  1260.          DSAs (DSA "c" in Figure C-1/X.518). The data structure can be represented as:
  1261.                b{ChA,a{OA}} = the Chained Operation signed by
  1262.                             DSA b
  1263.                where
  1264.                ChA = Chaining Argument.
  1265.                Authentication information carried in the DSP between  two  DSAs  [labelled
  1266.          exchange (2) in Figure C-1/X.518] therefore comprises two parts:
  1267.                -    the  Operation  Argument,  signed  by  the  initiator,  which  allows
  1268.                   authentication of the initiator;
  1269.                -   the Chained  Operation,  signed  by  the  sending  DSA,  which  allows
  1270.                   authentication of the sending DSA.
  1271.          C.6    Chaining through intermediate DSAs
  1272.                This procedure would be effected by  DSA  "c"  in  the  model  depicted  in
  1273.  
  1274.  
  1275.  
  1276.  
  1277.          PAGE16  Fascicle VIII.8 - Rec. X.518
  1278.  
  1279.          Figure C-1/X.518. DSA "c" will discard the signature provided by the sending  DSA
  1280.          (DSA "b" in  Figure  C-1/X.518),  and  will  modify  the  Chaining  Argument,  as
  1281.          described in  12.3 of  this  Recommendation.  DSA  "c"  shall  then  combine  the
  1282.          modified Chaining Argument with the  signed  Operation  Argument,  and  sign  the
  1283.          result to create a modified signed Chained Operation. This can be represented by:
  1284.                c{ChAw', a{OA}} = the Chained Operation signed by DSA "c"
  1285.                where
  1286.                ChAw' = modified Chaining Argument.
  1287.                This procedure would be effected by  DSA  "c"  in  the  model  depicted  in
  1288.          Figure C-1/X.518. DSA "c" upon the nature of the operation, and upon the type  of
  1289.          knowledge held, DSA "c" may perform request decomposition prior  to  chaining  or
  1290.          multicasting any resultant operation(s). This has been represented  n  Figure  C-
  1291.          1/X.518 by DSA "c" sending operations to DSA "d" and DSA "e"; in  each  case  the
  1292.          authentication procedure is identical.
  1293.          C.7    Results authentication
  1294.                The results authentication service  is  requested  by  an  initiator  of  a
  1295.          directory  operation  using  the  signed  option  within  the   protectionRequest
  1296.          SecurityParameter. In providing a response to such a request a DSA may optionally
  1297.          decide  whether  or  not  to  sign  any  or  all  of  the  results;  the  results
  1298.          authentication  service  does  not  provide  for  the  authentication  of   error
  1299.          responses.
  1300.                Within  the  context  of  a  particular  DSA  processing  results  from  an
  1301.          arbitrary number of DSAs (each of which are associated with a particular  service
  1302.          request) the following distinct cases are possible:
  1303.                -   the DSA provides a complete set of results for an operation without the 
  1304.                   need to perform any collating function (represented by DSA "d" and  DSA
  1305.                   "e" in Figure C-1/X.518);
  1306.                -   the DSA collates local results (sourced by this DSA) with the  results
  1307.                   from one or more other DS s  (represented  by  DSA  "c"  in  Figure  C-
  1308.                   1/X.518);
  1309.                -   the DSA chains a result from a DSA to either another DSA or a DUA  and
  1310.                   does not contribute to the result set as it does so (represented by DSA
  1311.                   "b" in Figure C-1/X.518).
  1312.          C.7.1  DSA results - no collation
  1313.                This paragraph addresses the role of a DSA in  being  the  sole  source  of
  1314.          results to a particular operation request, i.e. the DSA has no collation function
  1315.          to perform. The paragraph considers the case for both the DSP and the DAP.
  1316.          C.7.1.1  DSP
  1317.                The DSA can choose to perform either of the following procedures:
  1318.                -   return the results unsigned, this can be represented by:
  1319.                   ChR,OR = Chained Operation Result (unsigned)
  1320.                   where
  1321.                   ChR = Chaining Results
  1322.                   OR  = Operation Result;
  1323.                -   sign only the Operation Result, this can be represented by:
  1324.                   ChR, d(OR) = Operation Result signed by DSA "d";
  1325.                -   sign only the Chained Operation Result, which can be represented as:
  1326.                   d (ChR, OR) = Chained Operation Result signed by DSA "d"
  1327.                -   sign both the Operation Result and the Chained Operation Result, which
  1328.                   can be represented by:
  1329.                   d{ChR, D{OR}} = Operation Result and Chained Operation Result signed by
  1330.                   DSA "d".
  1331.                Note - For the case where  the  Operation  Result  is  signed,  the  signed
  1332.          result will be carried back to the initiator; for  the  case  where  the  Chained
  1333.          Operation Result has been signed, the receiving DSA  will  have  to  discard  the
  1334.          signature in order to modify the Chaining Results argument  prior  to  forwarding
  1335.          the Chained Operation Result.
  1336.          C.7.1.2  DAP
  1337.                This is fully described in Recommendation X.511, a  summary  is  reproduced
  1338.          here for completeness.
  1339.                The DSA can choose to either return the  results  unsigned,  which  can  be
  1340.          represented by:
  1341.                OR = Operation Result
  1342.                or, signed, which can be represented by:
  1343.                d{OR} = Operation Result signed by DSA "d".
  1344.  
  1345.  
  1346.  
  1347.  
  1348.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  1349.  
  1350.          C.7.2  DSA results - collation included
  1351.                This paragraph addresses the role of a  DSA  in  returning  the  result  of
  1352.          particular service requests where collation and integration of results from other
  1353.          DSAs is a necessary prerequisite. The paragraph considers the case for  both  the
  1354.          DSP and the DAP.
  1355.          C.7.2.1  DSP
  1356.                Recognizing that zero or more results  received  from  other  DSAs  may  be
  1357.          signed, this procedure enables a DSA to collate and  integrate  the  results  and
  1358.          sign zero or more constituent parts of the composite result and optionally,  sign
  1359.          the composite result as a whole.
  1360.          C.7.2.1.1   Production of the chaining results argument
  1361.                This procedure requires that a DSA (represented by D A  "c"  in  Figure  C-
  1362.          1/X.518) remove all of the Chained Operation Result signatures from  the  results
  1363.          received from external DSAs (DSA "d" and DSA "e" in Figure  C-1/X.518).  DSA  "c"
  1364.          then possesses a set of unsigned Chaining results,  a  set  of  signed  Operation
  1365.          Results, and a set of unsigned Operation Results.
  1366.                All the Chaining Results are manipulated as  described  in   12.4  of  this
  1367.          Recommendation to create a single modified Chaining Result, denoted by:
  1368.                i)  ChRw' = modified Chaining Results. 
  1369.          C.7.2.1.2   Unsigned locally derived result
  1370.                If the DSA does not wish to sign the locally generated results, the set  of
  1371.          unsigned Operation Results are merged with the local result to  form  a  modified
  1372.          set of Operation Results, denoted by:
  1373.                ORw' = Merged Operation Result.
  1374.                The complete set of Operation Results is then  the  union  of  the  set  of
  1375.          externally signed Operation Results denoted by:
  1376.                d{OR}, e{OR} ...
  1377.                and the Merged Operation Result, collectively denoted by:
  1378.                (ii) ORw', d{OR}, e{OR} ...= Operation Result. 
  1379.          C.7.2.1.3   Signed locally derived result
  1380.                If the DSA does wish to  sign  the  locally  generated  results,  then  the
  1381.          externally generated set of unsigned Operation Results are first merged together.
  1382.          The complete set of Operation Results is then the union of the locally signed set
  1383.          of Operation Results denoted by C{OR}, the  merged  set  of  externally  unsigned
  1384.          Operation Results denoted by, OR", and the set  of  externally  signed  Operation
  1385.          Results denoted by:
  1386.                d{OR}, e{OR}, ..., which are collectively denoted as:
  1387.                (iii) c{OR}, ORw", d{OR}, e{OR}, ... = Operation Result. 
  1388.          C.7.2.1.4   Unsigned chained operation result
  1389.                If the DSA does not wish to sign the Chained  Operation  Result,  then  the
  1390.          latter will comprise the Chaining Results (identified in (i) above) added to  the
  1391.          Operation Result identified in either (ii) or (iii)  above,  collectively,  these
  1392.          are denoted by:
  1393.                either:
  1394.                ChRw', ORw', d{OR}, e{OR}, ... =  Chained Operation Result (unsigned).
  1395.                or,
  1396.                ChRw', c{OR},  OR",  d{OR},  e{OR},  ...  =     Chained  Operation  Result
  1397.                   (unsigned) and Operation 
  1398.                                              Result signed by DSA "c".
  1399.          C.7.2.1.5   Signed chained operation result
  1400.                If the DSA does wish to sign the Chained Operation Result, then the  result
  1401.          will comprise the Chaining  Results  (identified  in  (i)  above)  added  to  the
  1402.          Operation Result (identified in either (ii) or (iii) above), collectively denoted
  1403.          as:
  1404.                either:
  1405.                c{ChRw', ORw', d{OR}, e{OR}, ...} = Chained Operation Result signed by DSA
  1406.                   "c"
  1407.                or,
  1408.                c{ChRw', c{OR}, ORw", d{OR}, e{OR}, ...} =      Chained  Operation  Result
  1409.                   and Operation
  1410.                                                    Result signed by DSA "c".
  1411.          C.7.2.2  DAP
  1412.                The procedure is very similar to  that  described  in   C.7.2.1,  with  the
  1413.          exception that the Chaining Results argument is not passed in the DAP.
  1414.          C.7.3  DSA chained results
  1415.  
  1416.  
  1417.  
  1418.  
  1419.          PAGE16  Fascicle VIII.8 - Rec. X.518
  1420.  
  1421.                 This paragraph addresses  the  procedures  to  be  effected  by  a  DSA  in
  1422.           chaining an operation result back to the requestor, DSA or DUA,  within  the  DSP
  1423.           and DAP respectively.
  1424.           C.7.3.1  DSP
  1425.                 The DSA initially removes the signature (if one exists)  from  the  Chained
  1426.           Operation Result. It then manipulates the Chaining Results argument as  described
  1427.           in this Recommendation, to produce a  modified  Chaining  Results  argument.  The
  1428.           latter is then merged back with  the  Operation  Result  argument  to  produce  a
  1429.           modified Chained Operation Result. Finally,  the  DSA  may  optionally  sign  the
  1430.           Chained Operation Result before passing it to the next DSA in the chain.
  1431.           C.7.3.2  DAP
  1432.                 A DSA (represented by DSA  "b"  in  Figure  C-1/X.518)  first  removes  the
  1433.           signature (if one exists) from the Chained Operation Result. It then analyses and
  1434.           discards the Chaining Results argument and,  finally,  it  optionally  signs  the
  1435.           remaining Operation Result argument before passing the result to the DUA.
  1436.  
  1437.  
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  
  1459.  
  1460.  
  1461.  
  1462.  
  1463.  
  1464.  
  1465.  
  1466.  
  1467.  
  1468.  
  1469.  
  1470.  
  1471.  
  1472.  
  1473.  
  1474.  
  1475.  
  1476.  
  1477.  
  1478.  
  1479.  
  1480.  
  1481.  
  1482.  
  1483.  
  1484.  
  1485.  
  1486.  
  1487.  
  1488.  
  1489.  
  1490.                                                        Fascicle VIII.8 - Rec. X.518   PAGE1
  1491.  
  1492.                                                    ANNEX D
  1493.                                      (to Recommendation X.518)
  1494.                               Distributed directory object identifiers
  1495.                This Annex is part of the Recommendation.
  1496.                This Annex includes all of the ASN.1 object identifiers contained  in  this
  1497.          Recommendation      in      the      form      of      the      ASN.1      module
  1498.          DistributedDirectoryObjectIdentifiers.
  1499.                DistributedDirectoryObjectIdentifiers     {joint-iso-ccitt ds(5) modules(1)
  1500.                                              distributedDirectoryObjectIdentifiers(13)}
  1501.                DEFINITION  ::=
  1502.                BEGIN
  1503.                EXPORTS
  1504.                      id-ot-dsa     id-pt-chainedRead,     id-pt-chainedSearch,     id-pt-
  1505.                       chainedModify;
  1506.                IMPORTS
  1507.                      id-ot, id-pt
  1508.                          FROM     UsefulDefinitions  {joint-iso-ccitt  ds(5)   modules(1)
  1509.                          usefulDefinitions(0)};
  1510.                -- objects --
  1511.                id-ot-dsa OBJECT IDENTIFIER  ::=  {id-ot 3}
  1512.                -- part types --
  1513.                id-pt-chainedRead OBJECT IDENTIFIER       ::=   {id-pt 4}
  1514.                id-pt-chainedSearch     OBJECT IDENTIFIER       ::=   {id-pt 5}
  1515.                id-pt-chainedModify     OBJECT IDENTIFIER       ::=   {id-pt 6}
  1516.                END
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.          PAGE16  Fascicle VIII.8 - Rec. X.518
  1562.  
  1563.